package ihm;

import java.util.HashMap;

/**
 * This class holds an enumeration of all command words known to the application. It is
 * used to recognise commands as they are typed in.
 * 
 * @author Michael Kolling, David J. Barnes and Cyril GORRIERI
 * @version 2012.01.24
 */

public class CommandWordHelper {
    // A mapping between a command word and the CommandWord
    // associated with it.
    private static HashMap<String, CommandWord> validCommands;

    /**
     * Constructor - initialise the command words.
     */
    static {
        validCommands = new HashMap<String, CommandWord>();
        for (CommandWord command : CommandWord.values()) {
            if (command != CommandWord.UNKNOWN) {
                validCommands.put(command.toString(), command);
            }
        }
    }

    /**
     * Find the CommandWord associated with a command word.
     * 
     * @param commandWord
     *            The word to look up.
     * @return The CommandWord correspondng to commandWord, or UNKNOWN if it is
     *         not a valid command word.
     */
    public static CommandWord getCommandWord(String commandWord) {
        CommandWord command = validCommands.get(commandWord);
        if (command != null) {
            return command;
        } else {
            return CommandWord.UNKNOWN;
        }
    }

    /**
     * Check whether a given String is a valid command word.
     * 
     * @return true if it is, false if it isn't.
     */
    public static boolean isCommand(String aString) {
        return validCommands.containsKey(aString);
    }

    /**
     * Print all valid commands to System.out.
     */
    public static void showAll() {
        for (String command : validCommands.keySet()) {
            System.out.print(command + "  ");
        }
        System.out.println();
    }
    
    /**
     * print help
     */
	public static void printHelp() {
		// TODO mettre l'aide
		
	}
}
